package com.zyp.jobseeker.service;

import com.zyp.jobseeker.entity.Position;
import com.zyp.jobseeker.enums.PositionStatus;
import com.github.pagehelper.PageInfo;

import java.util.Map;

/**
 * 岗位服务接口
 */
public interface PositionService {
    /**
     * 发布新岗位
     * @param enterpriseId 企业ID
     * @param positionData 岗位信息
     * @return 生成的岗位ID
     */
    Long publishPosition(Long enterpriseId, Map<String, Object> positionData);

    /**
     * 更新岗位信息
     * @param id 岗位ID
     * @param updateData 更新数据
     * @param enterpriseId 企业ID（用于权限验证）
     * @return 是否更新成功
     */
    boolean updatePosition(Long id, Map<String, Object> updateData, Long enterpriseId);

    /**
     * 废除岗位
     * @param id 岗位ID
     * @param enterpriseId 企业ID（用于权限验证）
     * @return 是否废除成功
     */
    boolean deprecatePosition(Long id, Long enterpriseId);

    /**
     * 获取企业岗位列表
     * @param enterpriseId 企业ID
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    PageInfo<Position> getEnterprisePositions(Long enterpriseId, int pageNum, int pageSize);

    /**
     * 搜索岗位
     * 学生和管理员都可以查看完整信息
     * @param keyword 搜索关键词
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果（包含完整岗位信息）
     */
    PageInfo<Position> searchPositions(String keyword, int pageNum, int pageSize);

    /**
     * 获取岗位信息
     * @param id 岗位ID
     * @return 岗位实体
     */
    Position getPositionById(Long id);
}